Ext.define('WindowLogin', {
    extend: 'Ext.window.Window',
    id: 'windowLogin',
    iconCls: 'cadeadoForm',
    height: 285,
    width: 450,
    closable: false,
    resizable: false,
    layout: 'fit',
    bodyStyle: 'background-color:#E8E8E8;',

    items: [frmLogin],

    listeners: {
        afterrender: function(t) {
            if(showAntiSpan) {
                this.setHeight(this.getHeight() + 100);
                frmLogin.add(fieldSetAntiSpam);
            }
        }
    },

    teclaEnter: function (a, b) {
        if (b.getKey() === b.ENTER) {
            b.stopEvent();
            this.entrar();
        }
    },

    entrar: function () {
        if(!frmLogin.isValid()) {
            Ext.Msg.alert(appTitulo, 'Por favor, verifique os problemas do formulário.');
            return false;
        }
        Ext.getCmp('btnEntrar').disable();
        this.el.mask('Autenticando...');
        
        var valPass = Ext.getCmp('senha').getValue();
        var passCrip = Ext.util.MD5(valPass);
        Ext.getCmp('senha').setValue(passCrip);

        frmLogin.submit({
            url: '../server/action/login/',
            method: 'post',
            success: function(t, resp, opts) {
                var obj = Ext.decode(resp.response.responseText);
                if(obj.success == 1) {
                    window.location = '..';
                } else {
                    Ext.getCmp('windowLogin').tratarErro(resp);
                }
            },
            failure: function(t, resp, opts) {
                Ext.getCmp('windowLogin').tratarErro(resp);
            }
        })
    },

    tratarErro: function (resp) {
        var obj = Ext.decode(resp.response.responseText);
        if(obj.success == 3) { //Falha de validação, varios erros
            var msgErro = '';
            for(var i = 0; i < obj.errors.length; i++) {
                for (var chave in obj.errors[i]){
                    msgErro += obj.errors[i][chave] + '<br />';
                }
            }
            Ext.Msg.alert(appTitulo + ' - Erro', msgErro);
        } else { // Erro genérico
            // Ext.Msg.alert(obj.errors.title, obj.errors.errormsg);
            Ext.Msg.alert(obj.errors.title, 'Empresa e/ou Usu&aacute;rio e/ou Senha incorreto(s).');
        }
        if(!showAntiSpan) {
            showAntiSpan = true;
            this.setHeight(this.getHeight() + 100);
            frmLogin.add(fieldSetAntiSpam);
            this.setY(this.getY() - 50, true);
        }
        Ext.getCmp('senha').reset();
        Ext.getCmp('btnEntrar').enable();
        this.el.unmask();
    },

    bbar: [{
            id: 'btnNaoCliente',
            text: 'Ainda não sou Cliente',
            tooltip: 'Ainda não sou Cliente',
            iconCls: 'btnNaoCliente',
            handler: function() {
                Ext.Msg.alert('MobFacil.com', 'Ainda não desenvolvido.');
            }
        },'-','->',
        {
            id: 'btnEsqueciTrocar',
            text: 'Esqueci / Trocar Senha',
            tooltip: 'Esqueci / Trocar Senha',
            iconCls: 'btnTrocarSenha',
            handler: function() {
                Ext.Msg.alert('MobFacil.com', 'Ainda não desenvolvido.');
            }
        },
        {
            id: 'btnLimpar',
            text: 'Limpar',
            tooltip: 'Limpar Formulário',
            iconCls: 'btnLimpar',
            handler: function() {
                Ext.getCmp('formLogin').getForm().reset();
                var win = Ext.getCmp('windowLogin');
                if(!(Ext.getCmp('lblCapsLock').hidden)) {
                    win.setHeight(win.getHeight() - 20);
                    Ext.getCmp('lblCapsLock').hide();
                }
            }
        }, {
            id: 'btnEntrar',
            itemId: 'btnEntrar',
            text: 'Entrar',
            tooltip: 'Entrar no Sistema',
            iconCls: 'btnEntrar',
            scope: this,
            handler: function() {
                Ext.getCmp('windowLogin').entrar();
            }
        }
    ]
});